package com.bestcem.xm.member.dao;

import com.alibaba.fastjson.JSONArray;
import com.bestcem.xm.member.entity.pojo.ImportRecordDo;
import com.bestcem.xm.member.entity.pojo.ImportRecordMsgDO;

import java.util.List;

/**
 * 示例服务
 *
 * @author yf.wang <yf.wang@idiaoyan.com>
 * @version V1.0
 * @date 2021/7/20
 */
public interface ImportRecordDao {
    /**
     * 获取数据
     *
     * @param id
     * @return
     */
    ImportRecordDo findOneById(String id);

    /**
     * 更新状态
     *
     * @param id
     * @param status
     */
    void updateRecordStatus(String id, Integer status);

    /**
     * 获取错误记录的数量
     *
     * @param importRecordId
     * @return
     */
    Integer countTotalErrorMsg(String importRecordId);

    /**
     * 分页获取 TotalErrorMsg
     *
     * @param id
     * @param start
     * @param size
     * @return
     */
    List<ImportRecordMsgDO> findTotalErrorMsgPageById(String id, int start, Integer size);

    /**
     * 生成导入记录
     *
     * @param record
     */
    void save(ImportRecordDo record);

    /**
     * 根据 id 更新记录中的文件名称
     *
     * @param recordId
     * @param fileName
     */
    void updateImportRecordFileName(String recordId, String fileName);

    /**
     * 根据id 更新记录的数据
     *  @param recordId
     * @param receiveCount
     * @param successCount
     * @param failedCount
     * @param data
     * @param status
     */
    void updateImportRecordData(String recordId, Integer receiveCount, Integer successCount, Integer failedCount, JSONArray data, int status);

    /**
     * 获取总页数
     *
     * @param orgId
     * @param userId
     * @param attributes
     * @return
     */
    Long countByOrgIdAndUserIdAndAttributeIn(String orgId, String userId, List<Integer> attributes);

    /**
     * 获取记录
     *
     * @param orgId
     * @param userId
     * @param attributes
     * @param start
     * @param rowsPerPage
     * @return
     */
    List<ImportRecordDo> findPageByOrgIdAndUserIdAndAttributeIn(String orgId, String userId, List<Integer> attributes, int start, Integer rowsPerPage);

    /**
     * 添加详细消息
     *
     * @param importRecordId
     * @param line
     * @param message
     */
    void insertRecordDeatil(String importRecordId, int line, String message);
}
